<template>
    <div class="register">
        <section class="form_container">
            <div class="manager_tip">
                <span class="title">Test</span>
                <el-form :model="registerUser" :rules="rules" ref="registerForm" label-width="80px" class="registerForm">
                    <el-form-item label="用户名" prop="name">
                        <el-input v-model="registerUser.name" placeholder="请输入用户名"></el-input>
                    </el-form-item>
                    <el-form-item label="密码" prop="password">
                        <el-input type="password" v-model="registerUser.password" placeholder="请输入密码"></el-input>
                    </el-form-item>
                    <el-form-item label="确认密码" prop="password2">
                        <el-input type="password" v-model="registerUser.password2" placeholder="请确认密码"></el-input>
                    </el-form-item>
                    <el-form-item>
                        <el-button type="primary" class="submit_btn" @click="submitForm('registerForm')">注册</el-button>
                    </el-form-item>
                </el-form>
            </div>
        </section>
    </div>
</template>

<script>
import { AxiosError } from 'axios';

export default {
    name: 'register',
    components: {},
    data() {
        let validatePass = (rule, value, callback) => {
            if (value !== this.registerUser.password) {
                callback(new Error('两次输入密码不一致!'));
            } else {
                callback();
            }
        };
        return {
            registerUser: {
                name: '',
                password: '',
                password2: '',
            },
            rules: {
                name: [
                    {
                        required: true,
                        message: '用户名不能为空！',
                        trigger: 'blur'
                    },
                ],
                password: [
                    {
                        required: true,
                        message: '密码不能为空！',
                        trigger: 'blur'
                    },
                ],
                password2: [
                    {
                        required: true,
                        message: '确认密码不能为空！',
                        trigger: 'blur'
                    },
                    {
                        validator: validatePass,
                        trigger: 'blur'
                    }
                ]
            }
        }
    },
    methods: {
        submitForm(formName) {
            this.$refs[formName].validate((valid) => {
                if (valid) {
                    this.$axios.post('/api/users/register', this.registerUser)
                    .then(res => {
                        this.$message({
                            message: '账号注册成功！',
                            type: 'success'
                        })
                    })
                    .then(() => this.$router.push('/login'))
                }
            });
        }
    }
}
</script>

<style lang="less" scoped>
.register {
    position: relative;
    width: 100%;
    height: 100%;
    background: url(../assets/bg.jpg) no-repeat center center;
    background-size: 100% 100%;

    .form_container {
        width: 370px;
        height: 210px;
        position: absolute;
        top: 10%;
        left: 34%;
        padding: 25px;
        border: 5px;
        text-align: center;

        .title {
            font-family: 'Microsoft YaHei';
            font-weight: bold;
            font-size: 26px;
            color: #fff;
        }

        .registerForm {
            margin-top: 20px;
            background: #fff;
            padding: 20px 40px 20px 20px;
            border-radius: 5px;
            box-shadow: 0 5px 10px #cccc;

            .submit_btn {
                width: 100%;
            }
        }
    }
}
</style>